<?php

declare(strict_types=1);

namespace App\Model\Users;



use App\Model\Model;
use Qbhy\HyperfAuth\AuthAbility;
use Qbhy\HyperfAuth\Authenticatable;

/**
 * @property int $id 主键
 * @property int $soft_id 主账号uid
 * @property string $account 账号
 * @property string $group_ids 账号所属用户组
 * @property string $password 密码
 * @property string $nick_name 昵称
 * @property string $company_name 公司名称
 * @property string $name 姓名
 * @property string $avatar 头像
 * @property string $birthday 生日
 * @property int $sex 性别(字典 1男 2女 3未知)
 * @property string $email 邮箱
 * @property string $phone 手机
 * @property string $tel 电话
 * @property string $remark 个人备注信息
 * @property string $config 用户其他配置相关信息
 * @property string $last_login_ip 最后登陆IP
 * @property string $last_login_time 最后登陆时间
 * @property int $user_type 用户类型（1管理员 2普通用户）
 * @property int $industry_id 所属行业 id
 * @property int $status 状态（字典 1正常 2冻结 3删除）
 * @property \Carbon\Carbon $created_at 创建时间
 * @property \Carbon\Carbon $updated_at 更新时间
 */
class User extends  Model implements Authenticatable
{

    use AuthAbility;

    protected array $hidden = [
        "password"
    ];


    /**
     * The table associated with the model.
     */
    protected ?string $table = 'users';

    /**
     * The attributes that are mass assignable.
     */
    protected array $fillable = ['id', 'soft_id', 'account', 'group_ids', 'password', 'nick_name', 'company_name', 'name', 'avatar', 'birthday', 'sex', 'email', 'phone', 'tel', 'remark', 'config', 'last_login_ip', 'last_login_time', 'user_type', 'industry_id', 'status', 'created_at', 'updated_at'];

    /**
     * The attributes that should be cast to native types.
     */
    protected array $casts = ['id' => 'integer', 'soft_id' => 'integer', 'sex' => 'integer', 'user_type' => 'integer', 'industry_id' => 'integer', 'status' => 'integer', 'created_at' => 'datetime', 'updated_at' => 'datetime'];

    /**
     *
     * @return \Hyperf\Database\Model\Relations\HasOne
     */
    public function code()
    {
        return $this->hasOne(UsersMiniAuth::class,'uid','id');
    }

}
